package tools.point.events 
{
	import flash.events.Event;
	import tools.point.utils.Metadata;
	
	/**
	 * 操作事件
	 * @author Zhenyu Yao
	 */
	public class OperationEvent extends Event 
	{
		
////////////////////////////////////////////////////////////////////////////////////////////////////
// 事件类型定义
////////////////////////////////////////////////////////////////////////////////////////////////////
		
		/// 撤销
		public static const UNDO		: String = "Undo";
		
		/// 重做
		public static const REDO		: String = "Redo";

////////////////////////////////////////////////////////////////////////////////////////////////////
// Properties
////////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 元数据
		 * @author Zhenyu Yao
		 */
		public function get metadata() : Metadata
		{
			return m_metadata.copy();
		}
		
////////////////////////////////////////////////////////////////////////////////////////////////////
// Public Functions
////////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 构造函数
		 * @param	type 事件类型
		 * @param	metadata 元数据
		 * @author Zhenyu Yao
		 */
		public function OperationEvent(type : String, metadata : Metadata) 
		{ 
			super(type);
			m_metadata = metadata;
		} 
		
////////////////////////////////////////////////////////////////////////////////////////////////////
// Override Functions
////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public override function clone():Event 
		{ 
			return new OperationEvent(type, m_metadata);
		}
		
////////////////////////////////////////////////////////////////////////////////////////////////////
// Private Functions
////////////////////////////////////////////////////////////////////////////////////////////////////
		
		private var m_metadata : Metadata = null;
	}
	
}

////////////////////////////////////////////////////////////////////////////////////////////////////
// end file